package bit_pratice.day8;

import java.util.Scanner;

/**
 * 两个数的最小公倍数=两数乘积/两数的最大公约数
 **/
//另一种思路：2、从两者较大的数开始遍历，当找到正好能同时整除两个数时，即得到两数的最小公倍数【效率低】
public class 最小公倍数 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int m=scanner.nextInt();
        //开始计算mn最小公倍数=m*n/(m和n最大公约数)
        //问题转化为求最大公约数问题
        long y=greatestCommonDivisor(m,n);
        long x=m*n;
        System.out.println(m*(n/y));//m*n可能会溢出，所以先除
    }
    //求最大公约数
    //辗转相除法（欧几里得算法）
    //大数%小数赋值给大数
    //m=10;n=6     r=10%6=4,   m=6,n=4     r=6%4=2   m=4,n=2     r=4%2=0 此时不入循环，n即是结果
    private static int greatestCommonDivisor(int m, int n) {
        //判断两数相等，直接返回
        if(m==n){
            return m;
        }
        //明确哪个数大，哪个小,固定大数给m
       if(m<n){
           int temp=m;
           m=n;
           n=temp;
       }
        //进行辗转相除
        int r;//当r值为0时，跳出循环，此时的n值就是结果
       while((r=m%n)>0){
           m=n;
           n=r;
       }
        return n;
    }
}
